home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 1 / Cream of the Crop 1.iso / PROGRAM / TPBIND.ARJ / LDB1.PAS < prev    next >
Pascal/Delphi Source File  |  1991-05-21  |  2KB  |  78 lines

  1.  
  2.     program ldb1;
  3.         uses bind;
  4.  
  5.         type strPtr = ^string;
  6.  
  7.     procedure display(D, M, A : pointer); far;
  8.         type strPtr = ^string;
  9.             intPtr = ^integer;
  10.         var i : integer;
  11.     begin
  12.         i := length(strPtr(D)^);
  13.  
  14.         inc(intPtr(A)^,i);
  15.                 writeln('length: ',i,
  16.                     '   accumulated: ',intPtr(A)^,
  17.                         '   string: ',strPtr(D)^);
  18.     end;
  19.  
  20.         function strcmp(D1, D2 : pointer) : integer; far;
  21.         begin
  22.             if (strPtr(D1)^ < strPtr(D2)^) then
  23.                     strcmp := -1
  24.                 else if (strPtr(D1)^ > strPtr(D2)^) then
  25.                     strcmp := 1
  26.                 else
  27.                     strcmp := 0
  28.         end;
  29.  
  30.  
  31.         const
  32.             s1 : string = 'Now is the time';
  33.                 s2 : string = 'for all programmers';
  34.                 s3 : string = 'to stop reinventing';
  35.                 s4 : string = 'the linked list!';
  36.  
  37.  
  38.         var B : CopyBinder;
  39.             i : word;
  40.  
  41.     begin
  42.         B.Init(CSTRING);
  43.  
  44.         B.pushC(@s1);
  45.         B.insqC(@s2);
  46.         B.atInsC(B.getNodes,@s3);
  47.         B.insqC(@s4);
  48.         
  49.         while (B.next) do
  50.             writeln(strPtr(B.current)^);
  51.  
  52.         writeln;
  53.  
  54.         for i := 0 to (B.getNodes - 1) do
  55.                     writeln(strPtr(B.atGet(i))^);
  56.  
  57.         writeln;
  58.  
  59.         i := 0;
  60.             
  61.         B.forEach(display,nil,@i);
  62.  
  63.         writeln;
  64.  
  65.  
  66.                 B.setCompare(strcmp);
  67.         B.sort;
  68.  
  69.         i := 0;
  70.         
  71.         B.forEach(display,nil,@i);
  72.  
  73.                 B.Done;
  74.  
  75.                 readln
  76.  
  77.         end.
  78.